package com.kuyun.base.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.kuyun.base.model.BaseDictionary;
import com.kuyun.base.model.BaseGroup;
import com.kuyun.base.model.ZtreeBean;

/**
 * 组织机构DAO接口
 * 
 * @author 王坤
 *
 * @date 2016年6月18日下午8:16:32
 *
 */
public interface BaseGroupMapper {

	/**
	 * 获取组织机构树
	 * 
	 * @author 王坤
	 * 
	 */
	public List<ZtreeBean> getGroupTree();

	/**
	 * 基础组织机构增加
	 */
	public int insertGroup(BaseGroup baseGroup);

	/**
	 * 基础组织机构更新
	 */
	public int updateGroup(BaseGroup baseGroup);

	/**
	 * 查询组织机构列表
	 */
	public List<BaseDictionary> queryGroup();

	/**
	 * 根据ID查询组织机构信息
	 */
	public BaseGroup findById(String id);

	/**
	 * 根据CODE查询组织机构对象
	 * 
	 * @author 王坤
	 *
	 */
	public BaseGroup findByCode(String dicPrivilegeTypeMenu);

	/**
	 * 根据Parent查询组织机构对象
	 * 
	 * @author 王坤
	 * 
	 */
	public List<BaseGroup> findByParentCode(@Param("pageSize") int pageSize, @Param("pageNumber") int pageNumber,
			@Param("parentId") String parentId, @Param("search") String search);

	/**
	 * 根据Parent查询组织机构总量
	 * 
	 * @author 王坤
	 * 
	 */
	public Integer findByParentCodeCount(@Param("parentId") String parentId, @Param("search") String search);

	/**
	 * 根据Parent查询子节点
	 */
	public Integer findSonGroup(@Param("parentId") String parentId);

	/**
	 * 判断code是否重复
	 */
	public Integer checkCode(BaseGroup baseGroup);

	/**
	 * * 删除字典信息
	 * 
	 * @param id
	 */
	public void deleteGroup(@Param("id") String id);

	/**
	 * 删除用户的旧组织机构
	 * 
	 * @author 唐靖
	 *
	 * @date 2017年7月4日下午9:44:47
	 *
	 * @param id
	 */
	public void deleteUserGroup(String id);

	/**
	 * 保存用户组织机构
	 * 
	 * @author 唐靖
	 *
	 * @date 2017年7月4日下午9:46:34
	 *
	 * @param params
	 */
	public void saveUserGroup(List<Map<String, String>> params);

	/**
	 * 为了用户选择而生成的tree
	 * 
	 * @author 唐靖
	 *
	 * @date 2017年7月4日下午9:53:23
	 *
	 * @param userId
	 * @return
	 */
	public List<ZtreeBean> getBaseGroupTreeForUser(String userId);
}
